﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class SolMagic02
{
    //想法，计算所有路径的长度，取最大值
    public int bagua(int[] nums)
    {

     
        int[] times=new int[nums.Length];
        int[] childNum=new int[nums.Length];

        //先反向遍历一下，记录每个结点的孩子数量

        for (int i = nums.Length-1; i >=0; i--)
        {
            int parent = nums[i];
            
            childNum[parent] = childNum[i]+1;//自己的孩子加上孙子
        }

            int maxTime = 0;
        times[0] = 0;
            for (int i = 1; i < nums.Length; i++)
        {
            int parent = nums[i];

            if (nums[i] == nums[i - 1])
            { //如果和前面的数字一样（兄弟），在前面的时间上面加1分钟

                if(childNum[i] < childNum[i - 1])//孩子多的就先收消息
                {
                    times[i] = times[i - 1] + 1;
                }
                else{
                    times[i] = times[parent] + 1;
                }
                

            }
            else
            { //如果和前面的数不一样，在父亲的时间上面加1分钟
                times[i] = times[parent] + 1;
                //Console.WriteLine("   parent:  " + parent);
                //Console.WriteLine(i + "   parenttime:  " + times[i]);
            }
            //Console.WriteLine(i+"   time:  "+times[i]);

            //最后一个人是最后一个知道的吗？不一定
            maxTime =Math.Max(maxTime, times[i]);

        }

return maxTime;

    }

}
class ProMagic02
{
    static void MainMagic02 (string[] args)
    {
        string s;

        //while ((s = Console.ReadLine()) != null)
        //{
        //    string[] tokens = s.Split(',');
        //    int[] nums = new int[tokens.Length];
        //    for (int i = 0; i < nums.Length; i++)
        //    {

        //        nums[i] = int.Parse(tokens[i]);
        //    }

        //    SolMagic02 sol = new SolMagic02();
        //    int res = sol.bagua(nums);
        //    Console.WriteLine(res);

        //}
        int[] nums = [-1, 0, 0, 2, 2];
        //-1会优先告诉有孩子的父亲结点
        SolMagic02 sol = new SolMagic02();
        int res = sol.bagua(nums);
        Console.WriteLine(res);

    }
}